#ifndef _VOL_HIK_MACHINE_
#define _VOL_HIK_MACHINE_

#include "MvCameraControl.h"

class CDeviceInfoWrapper
{
	private:
		MV_CC_DEVICE_INFO* pInfo;
	
	public:
		inline_ CDeviceInfoWrapper(){ pInfo = NULL; }
		inline_ ~CDeviceInfoWrapper(){}
		inline_ MV_CC_DEVICE_INFO* GetDeviceInfo(){ ASSERT(pInfo != NULL); return pInfo; }
		inline_ void SetDeviceInfo(MV_CC_DEVICE_INFO* ptr){ this->pInfo = ptr; }
};

class CInterfaceInfoWrapper
{
	private:
		MV_GENTL_IF_INFO* pInfo;
	
	public:
		inline_ CInterfaceInfoWrapper(){ pInfo = NULL; }
		inline_ ~CInterfaceInfoWrapper(){}
		inline_ MV_GENTL_IF_INFO* GetInterfaceInfo(){ ASSERT(pInfo != NULL); return pInfo; }
		inline_ void SetInterfaceInfo(MV_GENTL_IF_INFO* ptr){ this->pInfo = ptr; }
};

class CGenTLDeviceInfoWrapper
{
	private:
		MV_GENTL_DEV_INFO* pInfo;
	
	public:
		inline_ CGenTLDeviceInfoWrapper(){ pInfo = NULL; }
		inline_ ~CGenTLDeviceInfoWrapper(){}
		inline_ MV_GENTL_DEV_INFO* GetGenTLDevInfo(){ ASSERT(pInfo != NULL); return pInfo; }
		inline_ void SetGenTLDevInfo(MV_GENTL_DEV_INFO* ptr){ this->pInfo = ptr; }
};

class CDeviceHandleWrapper
{
	private:
		void* pDevice;
	
	public:
		inline_ CDeviceHandleWrapper(){ pDevice = NULL; }
		inline_ ~CDeviceHandleWrapper(){ if (pDevice != NULL) MV_CC_DestroyHandle(pDevice); }
		inline_ void* GetDeviceHandle(){ ASSERT(pDevice != NULL); return pDevice; }
		inline_ void SetDeviceHandle(void* ptr){ this->pDevice = ptr; }
};
#endif //_VOL_HIK_MACHINE_